Practically no individual can escape from being associated with an account of some type. More likely than not, an individual does not have a single account but has accumulated a great number of accounts with various companies. An individual, for instance, may have accounts with a local exchange carrier, a long distance provider, an Internet service provider, a wireless phone carrier, an electric company, a natural gas provider, a financial aid company, one or more credit card companies, retailer credit cards, automobile financiers, and a mortgage company. Of course, individuals are not the only entity to have accounts since companies also have accounts with other companies and also must maintain accounts with individuals and/or other companies. Financial accounts are therefore ubiquitous.
Managing accounts held by a company can be a complex task and require sophisticated processing systems. These processing systems are essential and track all debits and credits associated with each account. At periodic intervals, for instance monthly, the processing systems generate billing statements which are then provided to each account holder. The processing systems update balances as payments are received and also monitor new charges to the accounts. Some of the more demanding processing systems are perhaps those associated with credit card accounts. In addition to payment information, these systems often require minimum payments, calculate average daily balances, add interest charges, and impose late penalties. Further, to provide incentives to make a purchase, the credit card accounts may offer a period of time when no payments are due or when no interest accrues. Moreover, the processing systems also manage charges to the accounts, such as by receiving authorizations for charges from retailers and posting cleared charges to the accounts.
Conventional approaches to implementing processing systems involve use of mainframe computers programmed typically in COBOL. Most essential functions are performed in batch mode and the data is stored using indexed files. Also, as is typical with mainframe systems, the screens are in 3270 mode whereby data is output to and read from specific locations on the screen.
These conventional processing systems have several limitations. For one, as discussed above, most of the essential functions are performed in batch mode. Batch processing involves reading every single account and updating each account with new transactions. Batch processing is considered efficient since all updates are performed at a time when the demand for processing power is low, such as during the night.
Traditional posting algorithms involve sorting by account number all transactions that have arrived since the last run of the batch program and then all of the master records are sorted into account number order. The posting algorithm next performs a “sequential sweep” in which the account master records are read, processed, and updated in order. For each account master, the relevant control records are read and then each transaction on the account is read and processed. For example, if the transaction is a payment, relevant counters and balances are updated. After processing, all of the transactions are archived. If relevant, transactions such as interest and fees are generated, applied to the account, and archived. Next, actions based on the passage of time are executed, for example, accrued interest is calculated and applied and, if the account cycles, statement information is calculated and generated. A wide variety of operational reports may also be generated during this sequential sweep.
The batch operation was implemented in order to address concerns for efficiency. The batch mode of operation necessarily requires that data be stored for a period of time before the accounts are updated. As a result, the account information that may be available from a company is likely out-dated. On-line businesses and consumers, on the other hand, are placing demands on companies to have up-to-the-minute information on their accounts. Companies that have global operations are confronted with additional delays and are faced with increased demands for more up-to-date information.
Another limitation of conventional processing systems is that control hierarchies are inextricably built into the code. In today's system, for example, each account has a number of credit plans each of which may have one or more transactions posted to it. While this is reasonable for consumer credit, in the commercial credit market each transaction is an invoice and on the invoice are many line items, each of which may have different credit terms. In addition to the control hierarchies, many other aspects of the conventional processing systems are hard coded. For instance, many of the rules regarding the imposition of late charges, interest, and minimum payments are rigid rules coded into the system.
Because much of the functionality of conventional processing systems is built into the code, it is rather difficult to make any change to the system. A change to the processing system typically involves making a change to the source code, which is an extremely complex, time-consuming, and error-prone process. In addition to revising the code, any change to the program also entails re-compiling the code as well as testing and de-bugging the code. It is therefore difficult, laborious, and expensive to make changes to the conventional processing system.
Another limitation of the conventional processing system is that it is rather complex. Whenever additional functionality is desired in the processing system, additional code is added to the program to implement this desire to functionality. Over time, many processing systems have accumulated numerous layers of code with each layer representing another version. In fact, some processing systems have over 6 million lines of code. As a result, the logic in the code has an arcane set of rules and conditions that together produce the desired functionality. The core posting logic, for instance, is famously difficult to understand with successive changes only multiplying the complexity. A consequence of this complex logic is that only those who have intimate knowledge of the system are capable of performing the required changes to the system. Thus, a great deal of effort and institutional knowledge is necessary in order to modify the code of conventional processing systems.
Unfortunately, there is considerable pressure to make modifications to processing systems. This pressure is especially prevalent with retailers who offer convenient financing terms in order to entice a purchase of their goods. Retailers, for instance, commonly provide initial periods during which customers need not make any payments and/or no interest accrues. Other incentives that may be offered include a discount of the purchase price for those customers that opens an account. These special financing terms are examples of ways in which processing systems need to evolve and be modified in order to allow its users to remain competitive. This continual need to offer special terms translates into a desire to have processing systems that can be easily and quickly modified or updated. A need therefore exists for processing systems that can be quickly and easily modified in response to competitive pressures.